x11: Fix key event state translation
authorMatthias Clasen <mclasen@redhat.com>
Sat, 21 Mar 2020 14:25:06 +0000 (10:25 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 21 Mar 2020 14:26:11 +0000 (10:26 -0400)
In the event refactoring, a bit was lost.

This makes Ctrl-Shift-i work again to open
the inspector.

gdk/x11/gdkdevicemanager-xi2.c

index 26adf003138f08a93af84306b316a54ff0a9eae7..6e6ba54c93df415e5fddf816a4aa8e2f5b788130 100644 (file)
@@ -1520,7 +1520,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
       {
         XIDeviceEvent *xev = (XIDeviceEvent *) ev;
         GdkKeymap *keymap = gdk_display_get_keymap (display);
-        GdkModifierType consumed, state;
+        GdkModifierType consumed, state, orig_state;
         guint keyval;
 
         GDK_DISPLAY_NOTE (display, EVENTS,
@@ -1550,9 +1550,10 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
                                              xev->group.effective,
                                              &keyval,
                                              NULL, NULL, &consumed);
-
+        orig_state = state;
         state &= ~consumed;
         _gdk_x11_keymap_add_virt_mods (keymap, &state);
+        state |= orig_state;
 
         event = gdk_event_key_new (xev->evtype == XI_KeyPress
                                      ? GDK_KEY_PRESS